SETBUF
Section: MINTLIB LIBRARY FUNCTIONS
(3)
Updated: 3 March 1993
Index
Return to Main Contents
NAME
setbuf, setlinebuf, setvbuf - assign buffering to a stream
SYNOPSIS
#include <stdio.h>
#include <unistd.h> // Only needed for setlinebuf
void setbuf(FILE *stream, char *buf);
void setlinebuf(FILE *stream);
int setvbuf(FILE *stream, char *buf, int type, size_t size);
DESCRIPTION
setbuf may be used after a stream has been opened but before
it is read or written. It causes the array pointed to by buf
to be used instead of an automatically allocated buffer.
If buf is the NULL pointer input/output will be completely
unbuffered.
A constant BUFSIZ, defined in <stdio.h>, tells how big an
array is needed:
char buf[BUFSIZ];
setlinebuf may be used after a stream has been opened and
after it is read or written. It changes the buffering on
stream from block/unbuffered to line buffered.
setvbuf may be used after a stream has been opened but before
it is read or written. The type parameter determines how
stream will be buffered. Legal values for type (defined in
<stdio.h>) are:
_IOFBF: causes input/output to be fully buffered.
_IOLBF: causes output to be line buffered; the buffer
will be flushed when a newline is written,
the buffer is full, or input is requested.
_IONBF: causes input/output to be fully unbuffered.
If buf is not the NULL pointer, the array it points to will
be used for buffering, instead of an automatically allocated
buffer. size specifies the size of the buffer to be used. The
constant BUFSIZ in <stdio.h> is suggested as a good buffer
size. If input/output is unbuffered, buf and size are ignored.
By default, output to a terminal is line buffered and all
other input/output is fully buffered.
SEE ALSO
fopen(3),
getc(3),
putc(3)
RETURN VALUES
setvbuf returns a non-zero value if an illegal value for type
or size is provided; otherwise, it will return zero.
NOTES
A common source of error is allocating buffer space as an
"automatic" variable in a code block, and then failing to
close the stream in the same block.
setlinebuf is available on BSD UN*X, and not on System V.
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- SEE ALSO
-
- RETURN VALUES
-
- NOTES
-
This document was created by
man2html,
using the manual pages.
Time: 11:14:45 GMT, June 22, 2025